﻿using System.Collections.Generic;
using Cms.Domain;

namespace Cms.Application.Admin.Views
{
    public interface IEditMediaFolderView : IAdminPageView, ITranslatable
    {
        int FolderID { get; }

        int SelectedParentFolderID { get; set; }

        string Name { get; set; }
        void SetParentFolders(string domain, IList<MediaFolder> folders);

        void SetCategories(IList<Category> rootCategories, IList<Category> inheritedCategories,
                           IList<Category> categories);

        IEnumerable<Category> GetSelectedCategories();

        void SetAllowedAdministratorGroups(IList<AdministratorGroup> availableGroups,
                                           IList<AdministratorGroup> inheritedGroups, IList<AdministratorGroup> groups);

        IEnumerable<AdministratorGroup> GetSelectedAllowedAdministratorGroups();

        void SetDeniedAdministratorGroups(IList<AdministratorGroup> availableGroups,
                                          IList<AdministratorGroup> inheritedGroups, IList<AdministratorGroup> groups);

        IEnumerable<AdministratorGroup> GetSelectedDeniedAdministratorGroups();

        void SetRequiredUserGroups(IList<UserGroup> availableGroups, IList<UserGroup> inheritedGroups,
                                   IList<UserGroup> selectedGroups, IList<UserGroup> deselectedGroups);

        IEnumerable<UserGroup> GetSelectedRequiredUserGroups();

        IEnumerable<UserGroup> GetDeselectedUserGroups();

        void RemoveFileFromOutputCache(string virtualPath);
    }
}